package ScalaStudy.chapter05

import scala.annotation.tailrec

object Test10_Recursion {
  def main(args: Array[String]): Unit = {


    /////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////   递归   //////////////////////////////////////
    /////////////////////////////////////////////////////////////////////////////////////////

    //递归实现计算阶乘
println("(1)")

    def fact(n : Int) :Int ={
      if(n == 0) return 1
      fact(n - 1) * n
    }
    println(fact(5))

    //尾递归调用
println("(2)")

    def tailFact(n: Int): Int = {
      @tailrec                                                            //表示这是尾递归
      def loop(n: Int, result: Int): Int = {
        if (n == 0) return result
        loop(n - 1, result * n)
      }
      loop(n,result = 1)
    }

    println(tailFact(5))


  }
}
